home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 4 / Meeting Pearls Vol. IV (1996)(GTI - Schatztruhe)[!].iso / Contrib / MPHelper / metatyper.rexx < prev    next >
OS/2 REXX Batch file  |  1996-10-20  |  5KB  |  148 lines

  1. /* $VER: metatyper.rexx 1.1 (10.10.96)
  2. */
  3. /* (C) by Martin Steigerwald */
  4.  
  5. OPTIONS RESULTS
  6. IF ~SHOW('L', "rexxsupport.library") THEN ADDLIB('rexxsupport.library', 0, -30, 0)
  7. IF ~SHOW('L', "rexxdossupport.library") THEN ADDLIB('rexxdossupport.library', 0, -30,0)
  8.  
  9. ADDRESS COMMAND
  10. 'copy c:doicon ram:'
  11. 'copy c:dmcontrol ram:'
  12. ADDRESS
  13.  
  14. browsedir("")
  15.  
  16. ADDRESS COMMAND
  17. 'delete ram:doicon ram:dmcontrol t:mt-datatype t:mt-checkinfo QUIET'
  18. ADDRESS
  19. EXIT
  20.  
  21. browsedir: PROCEDURE
  22. PARSE ARG dir
  23. browsefiles(dir)
  24. dirlist=SHOWDIR(dir, 'D', ':'); ende=0; istart=1;
  25. IF dirlist ~== "" THEN DO
  26.     DO UNTIL ende=1
  27.         i=INDEX(dirlist, ':', istart);
  28.         IF i>0 THEN DO
  29.             nextdir=SUBSTR(dirlist, istart, i-istart); istart=i+1
  30.         END
  31.         ELSE DO
  32.             nextdir=SUBSTR(dirlist, istart); ende=1
  33.         END
  34.         IF dir ~== "" THEN nextdir=dir || "/" || nextdir
  35.         browsedir(nextdir)
  36.     END
  37. END
  38. RETURN 0
  39.  
  40. browsefiles: PROCEDURE
  41. PARSE ARG dir
  42. SAY "prüfe" dir
  43. filelist=SHOWDIR(dir, 'A', ':');
  44. ohneinfolist=""; ende=0; istart=1; oidateien="";
  45. lfilelist=LENGTH(filelist)
  46. IF filelist ~=="" THEN DO
  47.     DO UNTIL ende=1
  48.         i=INDEX(filelist, ':', istart);
  49.         IF i>0 THEN DO
  50.             nextfile=SUBSTR(filelist, istart, i-istart); istart=i+1
  51.         END
  52.         ELSE DO
  53.             nextfile=SUBSTR(filelist, istart); ende=1
  54.         END
  55.         IF RIGHT(UPPER(nextfile),5) == '.INFO' THEN DO
  56.             ohneinfo=LEFT(nextfile, LENGTH(nextfile)-5)
  57.             IF dir ~== "" THEN pfad=dir || "/"
  58.                 ELSE pfad=""
  59.             checkfile(pfad || ohneinfo)
  60.         END
  61.     END
  62. END
  63. RETURN 0
  64.  
  65. checkfile: PROCEDURE
  66. PARSE ARG ohneinfo
  67.  
  68. test=0 /* wenn gesetzt, dann sagt sie nur, was sie tun wuerde */
  69.  
  70. dt=''
  71. IF EXISTS(pfad || ohneinfo) THEN DO
  72.     IF INDEX(STATEF(ohneinfo), "FILE") ~== 0 THEN DO
  73.         ADDRESS COMMAND 'dmcontrol testfiles "' || ohneinfo || '" >t:mt-datatype'
  74.         OPEN(fh1, 't:mt-datatype', 'read'); dt=READLN(fh1); CLOSE(fh1);
  75.  
  76.         IF INDEX(dt, 'Error') == 0 THEN DO
  77.             dt=SUBSTR(dt, INDEX(dt, '<<')+3); dt=TRIM(LEFT(dt, INDEX(dt, '>>')-1))
  78.         END
  79.     END
  80. END
  81. no=0; metatype=''
  82. SELECT
  83.     WHEN RIGHT(UPPER(ohneinfo), 5) == '.FONT'
  84.         THEN no=1
  85.     OTHERWISE NOOP
  86. END
  87.  
  88. IF no=0 THEN DO
  89.     ADDRESS COMMAND 'DoIcon DT CHECKTOOLTYPEVALUE=METATYPE "' || ohneinfo || '" >t:mt-checkinfo'
  90.     OPEN(fh1, 't:mt-checkinfo', 'read')
  91.     olddeftoolorig=WORD(READLN(fh1),2); olddeftool=UPPER(olddeftoolorig);
  92.     metatypeda=READLN(fh1);
  93.     CLOSE(fh1)
  94.     IF INDEX(metatypeda, 'METATYPE') == 0 THEN DO
  95.         SELECT
  96.             WHEN dt='ANIM-IFF'          THEN metatype='ANIM'
  97.             WHEN dt='ASCII-AmigaGuide'  THEN metatype='GUIDE'
  98.             WHEN dt='ASCII-REXX'        THEN metatype='REXX'
  99.             WHEN dt='ASCII-Text'        THEN metatype='TEXT'
  100.             WHEN dt='GFX-GIF'           THEN metatype='GIF'
  101.             WHEN dt='GFX-IFF'           THEN metatype='ILBM'
  102.             WHEN dt='GFX-JPEG'          THEN metatype='JPEG'
  103.             WHEN dt='SMPL-IFF'          THEN metatype='8SVX'
  104.             OTHERWISE NOOP
  105.         END
  106.         i=INDEX(ohneinfo, '.'); ext='';
  107.         IF i ~== 0 THEN DO
  108.             ext=UPPER(SUBSTR(ohneinfo,INDEX(ohneinfo,'.')+1))
  109.         END
  110.         SELECT
  111.             WHEN INDEX(olddeftool, 'ICONX') ~==0     THEN metatype='ICONX'
  112.             WHEN INDEX(olddeftool, 'INSTALLER') ~==0 THEN metatype='INST'
  113.             WHEN INDEX(olddeftool, 'SHOWDVI') ~==0   THEN metatype='DVI'
  114.             /* Die ARexx-Skript-Erkennung von Datamaster suckt */
  115.             WHEN INDEX(olddeftool, 'RX') ~==0        THEN metatype='REXX'
  116.             WHEN ext == 'REXX'                       THEN metatype='REXX'
  117.             WHEN ext == 'DVI'                        THEN metatype='DVI'
  118.             WHEN ((ext == 'C')  | (ext == 'H') | (ext == 'CT') | (ext == 'CD') | (ext == 'I') | (ext == 'ASM'))
  119.                 THEN metatype='SOURCE'
  120.             OTHERWISE NOOP
  121.         END
  122.  
  123.         IF metatype ~== '' THEN DO
  124.             SELECT
  125.                 WHEN INDEX(olddeftool, 'MOUNT') ~==0         THEN no=1
  126.                 WHEN INDEX(olddeftool, 'ADDDATATYPES') ~== 0 THEN no=1
  127.                 OTHERWISE NOOP
  128.             END
  129.             IF no==0 THEN DO
  130.                 SAY RIGHT(ohneinfo,50) " --> " || metatype
  131.                 IF test==0 THEN DO
  132.                     ADDRESS COMMAND 'DoIcon "' || ohneinfo || '" NEWDEFAULTTOOL=":C/MetaTool" ADDTOOLTYPE="METATYPE=' || metatype || '"'
  133.                 END
  134.             END
  135.         END
  136.     END
  137.     ELSE DO
  138.         IF olddeftoolorig ~== ":C/MetaTool" THEN DO
  139.             /* der C:/MetaTool Check ;) */
  140.             SAY RIGHT(ohneinfo,50) " --> :C/MetaTool ;)))"
  141.             IF test==0 THEN DO
  142.                 ADDRESS COMMAND 'DoIcon "' || ohneinfo || '" NEWDEFAULTTOOL=":C/MetaTool"'
  143.             END
  144.         END
  145.     END
  146. END
  147. RETURN 0
  148.